Software package installations with proximity tags

ABSTRACT

A method of installing a software package may include storing a software package coupon on a proximity tag coupled to a computing device; accessing the software package coupon and installing an operating system OS agent during an initial booting of the computing device; and with the OS agent, downloading and installing the software package.

BACKGROUND

Software installation on a computing device has increasingly becomerelatively easier for an end user or information technology specialistto complete. When a software package is installed on a computing device,customization of various software packages may also be completed. Wherethis occurs on a relatively high number of computing devices, a ‘master’selected software package is customized, tested, and placed on thenumber of computing devices. Where this occurs on a relatively lownumber of computing devices, the selected software package is manuallycustomized for each of the computing devices.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings illustrate various examples of the principlesdescribed herein and are a part of the specification. The illustratedexamples are given merely for illustration, and do not limit the scopeof the claims.

FIG. 1 is a block diagram of a computing device according to an exampleof the principles described herein.

FIG. 2 is a block diagram of a proximity tag according to an example ofthe principles described herein.

FIG. 3 is a flowchart showing a method of installing a software packageaccording to an example of the principles described herein.

FIG. 4 is a block diagram showing the network topography and datatransfer of a system for installing a software package according to anexample of the principles described herein.

Throughout the drawings, identical reference numbers designate similar,but not necessarily identical, elements.

DETAILED DESCRIPTION

As described above, the customization of software packages may beaccomplished a number of ways depending on the number of computingdevices the software package is to be installed on. When eithercustomizing a “master” software package for a relatively high number ofcomputing devices or the customizing each software package for arelatively low number of computing devices, time and money is spent onthis customization process. Indeed, in some cases where each individualsoftware package to be installed on the computing device is to becustomized according to as many individual users, manual customizationand even customization of a master software package may not be anavailable option.

At a storefront, a purchaser of a computing device may not have anopportunity to customize any software included or installed with thecomputing device. Indeed, after purchase of a computing device at astorefront, in order to customize any software packages in the computingdevice, a user is left to personally install various additional packagesby interfacing with a physical copy of a software customization packageor gain access to that same software customization package via a networkconnection.

The present specification, therefore describes a method of installing asoftware package including storing a software package coupon on aproximity tag coupled to a computing device; accessing the softwarepackage coupon and installing an operating system OS agent during, forexample, a pre-boot environment execution UEFI of the computing device;and with the OS agent, downloading and installing the software packageduring booting of an operating system of the computing device. In anexample and in the case of using a passive proximity tag, the computingdevice may be turned off and even boxed as the proximity tag has thesoftware package coupon stored thereon.

The present specification further describes a computing device includingproximity tag and a proximity tag coupon manager PTCM wherein, prior tobooting of an operating system OS on the computing device, the PTCM isto read a software package coupon stored on the proximity tag, installan OS agent based on data associated with the software package coupon,and cause the OS agent to be called during booting of the OS forinstallation of a software package on the computing device.

The present specification also describes a proximity tag including asoftware package coupon including an address to a source to download anoperating system OS agent and a product key to install a softwarepackage during an initial booting of an operating system of a computingdevice.

As used in the present specification and in the appended claims, theterm “proximity tag” is meant to be understood as any device that maywirelessly communicate with a proximity tag writer device, store thedata written by the device in a non-volatile media, and allow this datato be read by the main processor of the computing device through acommunication channel.

Further, as used in the present specification and in the appendedclaims, the term “software package” is meant to be understood as anycomputer readable program code that can augment other computer readableprogram code or alter other computer readable program code.

Even still further, as used in the present specification and in theappended claims, the term “a number of” or similar language is meant tobe understood broadly as any positive number comprising 1 to infinity.

In the following description, for purposes of explanation, numerousspecific details are set forth in order to provide a thoroughunderstanding of the present systems and methods. It will be apparent,however, to one skilled in the art that the present apparatus, systemsand methods may be practiced without these specific details. Referencein the specification to “an example” or similar language means that aparticular feature, structure, or characteristic described in connectionwith that example is included as described, but may not be included inother examples.

FIG. 1 is a block diagram of a computing device 105 according to anexample of the principles described herein. The computing device 105 mayinclude a proximity tag 110 and a proximity tag coupon manager PTCM 115.

The computing device 105 may be any type of computing device. Examplesof computing devices 105 include servers, desktop computers, laptopcomputers, personal digital assistants (PDAs), mobile devices,smartphones, gaming systems, and tablets, among other electronicdevices.

The computing device 105 may be utilized in any data processing scenarioincluding, stand-alone hardware, mobile applications, through acomputing network, or combinations thereof. Further, the computingdevice 105 may be used in a computing network, a public cloud network, aprivate cloud network, a hybrid cloud network, other forms of networks,or combinations thereof. In one example, the methods provided by thecomputing device 105 are provided as a service over a network by, forexample, a third party. In this example, the service may include, forexample, the following: a Software as a Service SaaS hosting a number ofapplications; a Platform as a Service PaaS hosting a computing platformcomprising, for example, operating systems, hardware, and storage, amongothers; an Infrastructure as a Service IaaS hosting equipment such as,for example, servers, storage components, network, and components, amongothers; application program interface API as a service APIaaS, otherforms of network services, or combinations thereof. The present systemsand methods may be implemented on one or multiple hardware platforms, inwhich the modules in the system can be executed on one or acrossmultiple platforms. Such modules can run on various forms of cloudtechnologies and hybrid cloud technologies or offered as a SaaS Softwareas a service that can be implemented on or off the cloud. In anotherexample, the methods provided by the computing device 105 are executedby a local administrator.

To achieve its desired functionality, the computing device 105 includesvarious hardware components. Among these hardware components may be anumber of processors, a number of data storage devices, a number ofperipheral device adapters, and a number of network adapters. Thesehardware components may be interconnected through the use of a number ofbusses and/or network connections. In one example, the processor, datastorage device, peripheral device adapters, and a network adapter may becommunicatively coupled via a bus.

The processor may include the hardware architecture to retrieveexecutable code from the data storage device and execute the executablecode. The executable code may, when executed by the processor, cause theprocessor to implement at least the functionality of customizing asoftware package on the computing device 105, according to the methodsof the present specification described herein. In the course ofexecuting code, the processor may receive input from and provide outputto a number of the remaining hardware units.

The data storage device may store data such as executable program codethat is executed by the processor or other processing device. Asdiscussed below, the data storage device may specifically store computercode representing a number of applications that the processor executesto implement at least the functionality described herein.

The data storage device may include various types of memory modules,including volatile and nonvolatile memory. For example, the data storagedevice of the present example includes Random Access Memory RAM, ReadOnly Memory ROM, and Hard Disk Drive HDD memory. Many other types ofmemory may also be utilized, and the present specification contemplatesthe use of many varying types of memory in the data storage device asmay suit a particular application of the principles described herein. Incertain examples, different types of memory in the data storage devicemay be used for different data storage needs. For example, in certainexamples the processor may boot from Read Only Memory ROM, maintainnonvolatile storage in the Hard Disk Drive HDD memory, and executeprogram code stored in Random Access Memory RAM.

Generally, the data storage device may include a computer readablemedium, a computer readable storage medium, or a non-transitory computerreadable medium, among others. For example, the data storage device maybe, but not limited to, an electronic, magnetic, optical,electromagnetic, infrared, or semiconductor system, apparatus, ordevice, or any suitable combination of the foregoing. More specificexamples of the computer readable storage medium may include, forexample, the following: an electrical connection having a number ofwires, a portable computer diskette, a hard disk, a random-access memoryRAM, a read-only memory ROM, an erasable programmable read-only memoryEPROM or Flash memory, a portable compact disc read-only memory CD-ROM,an optical storage device, a magnetic storage device, or any suitablecombination of the foregoing. In the context of this document, acomputer readable storage medium may be any tangible medium that cancontain, or store computer usable program code for use by or inconnection with an instruction execution system, apparatus, or device.In another example, a computer readable storage medium may be anynon-transitory medium that can contain, or store a program for use by orin connection with an instruction execution system, apparatus, ordevice.

The hardware adapters in the computing device 105 enable the processorto interface with various other hardware elements, external and internalto the computing device 105. For example, the peripheral device adaptersmay provide an interface to input/output devices, such as, for example,display device, a mouse, or a keyboard. The peripheral device adaptersmay also provide access to other external devices such as an externalstorage device, a number of network devices such as, for example,servers, switches, and routers, client devices, other types of computingdevices, and combinations thereof.

The display device may be provided to allow a user of the computingdevice 105 to interact with and implement the functionality of thecomputing device 105. The peripheral device adapters may also create aninterface between the processor and the display device, a printer, orother media output devices. The network adapter may provide an interfaceto other computing devices within, for example, a network, therebyenabling the transmission of data between the computing device 105 andother devices located within the network.

The computing device 105 may, when executed by the processor, displaythe number of graphical user interfaces GUIs on the display deviceassociated with the executable program code representing the number ofapplications stored on the data storage device. The GUIs may display,for example, pop-up windows or other windows that allow interaction witha user to customize a software package on the computing device 105.Examples of display devices include a computer screen, a laptop screen,a mobile device screen, a personal digital assistant PDA screen, and atablet screen, among other display devices. Examples of the GUIsdisplayed on the display device, are described in more detail below.

The computing device 105 may further include an operating system. Suchoperating systems may include, for example, WINDOWS® operating systemdeveloped and distributed by Microsoft Corporation; UBUNTU® operatingsystem developed and distributed by Canonical Ltd.; UNIX® operatingsystem developed by American Telephone and Telegraph Company anddistributed as an open source software package; LINUX® Unix-basedoperating system developed and distributed as an open source softwarepackage; ANDROID® Linux-based operating system developed and distributedby Google, Inc.; BERKELEY SOFTWARE DISTRIBUTION BSD Unix-based operatingsystem developed and distributed by the Computer Systems Research GroupCSRG of the University of California, Berkeley; iOS® operating systemdeveloped and distributed by Apple Inc.; Mac OS X operating systemdeveloped and distributed by Apple Inc. As described above, theoperating system or software packages running on the computing device105 with the operating system may be customized as described herein.

The computing device 105 further includes a proximity tag 110. Theproximity tag 110 may be coupled at any location associated with thecomputing device 105. In an example, the proximity tag 110 may becoupled to a housing of the computing device 105 accessible or notaccessible to a user of the computing device 105. In an example, theproximity tag 110 may be coupled to a packaging associated with thecomputing device 105. As described below, the proximity tag 110 may beclose enough to a proximity tag reader communicatively coupled to thecomputing device 105 such that a proximity tag reader may communicatewith the proximity tag 110.

The proximity tag 110 may be any type of device that may wirelesslycommunicate with a proximity tag writer used to program a softwarepackage coupon thereon and a proximity tag reader located within thecomputing device 105. In an example, the proximity tag 110 is anear-field communication NFC tag that enables each of the proximity tagwriter and reader to establish communication when the NFC tag is withina predetermined distance. In an example, the proximity tag 110 is aradio-frequency identification RFID tag that implements anelectromagnetic field in order to write data to and read data from theproximity tag 110. Other examples of proximity wireless communicationdevices may also exist and the present specification contemplates theuse of those types of devices to at least read a software package couponstored on the proximity tag 110.

The proximity tag 110 may include its own data storage device. The datastorage device of the proximity tag 110 may be any non-volatile storagedevice that, when powered, may be written to and read from. As mentionedabove, the software package coupon 120 including the product key 130 maybe stored on the data storage device of the proximity tag 110. This isdescribed in more detail below.

In an example, the proximity tag 110 is a passive proximity tag 110. Apassive proximity tag 110 may be electrically activated using an energysource apart from the passive proximity tag 110. In this example, datamay be written to or read from the passive proximity tag 110 when thepassive proximity tag 110 is electrically activated by the energysource. Additionally, in this example, wireless communication may beinitiated between a proximity tag reader and/or writer when the passiveproximity tag 110 is electrically activated by the energy source. In anexample, the proximity tag 110 is an active proximity tag 110. In thisexample, the active proximity tag 110 includes a local power source suchas a battery. In this example, the active proximity tag 110 may becommunicatively coupled to a proximity tag reader and/or writer when asignal from the proximity tag reader and/or writer sends a signal to theactive proximity tag 110 requesting that communication be established.

As described above, the proximity tag 110 may be small enough to fitwithin a housing of the computing device 105. In an example, theproximity tag 110 is housed within the housing of the computing device105 in order to prevent tampering of the proximity tag 110 by a user. Inan example, however, the proximity tag 110 may be placed anywhere,including outside of the housing of the computing device 105 so long asa proximity tag reader within the housing of the computing device 105can establish communication with the proximity tag 110.

The computing device 105 may further include a proximity tag couponmanager PTCM 115. In an example, the PTCM 115 may be a module thatincludes executable program code that may be executed by the processorof the computing device 105. In this example, the program code thatdefines the PTCM 115 may be provided separately from other executableprogram code stored in memory associated with a basic input/outputsystem BIOS program code or operating system OS program code. In anexample, the PTCM 115 may be an application specific integrated circuitASIC that, when directed by the processor of the computing device 105,executes the functionality described herein. In an example, the PTCM 115is a software application residing on the BIOS of the computing deviceand executed by the processor of the computing device.

Specifically, the PTCM (115) may initiate a coupon manager procedurewhere the PTCM (115) accesses a software package coupon stored on theproximity tag 110 by a proximity tag writer. In an example, the PTCM 115accesses the software package coupon by initiating a communicationchannel between the proximity tag and a processor associated with thecomputing device and reads the software package coupon on the proximitytag. As described herein, the PTCM 115 may be executed upon execution ofa BIOS of the computing device 105. Upon execution of the PTCM 115, thePTCM 115 retrieves the software package coupon that includes, amongothers, an address to an operating system OS agent and a product key orother certification to download the software package associated with theproduct key and/or OS agent.

FIG. 2 is a block diagram of a proximity tag 110 according to an exampleof the principles described herein. The proximity tag 110 may include asoftware package coupon 120. The software package coupon 120 may includean address 125 to a source to download an OS agent and a product key 130to install a software package during, for example, an initial booting ofan OS of a computing device 105.

As described above, the address 125 may be any indicator that directsthe BIOS via the PTCM 115 to a source where the OS agent may bedownloaded and installed. In an example, the address 125 may be auniform resource locator URL that directs the BIOS to download the OSagent over a network connection. In this example, the BIOS may downloadthe OS agent using the unified extensible firmware interface UEFInetwork stack. In an example, the address 125 is an address to a portionof memory located on the data storage device of the computing device105.

The downloaded OS agent and product key may be stored on a data storagedevice of the computing device 105. After the downloaded OS agent issaved to the data storage device, the PTCM 115 may configure the OS onthe computing device 105 to call the OS agent once the OS is booted. Inan example, this may be done by adjusting registry keys in the OS, orusing any other method adequate to the specific OS, such that the OSagent is executed at least before the OS is completely booted. As the OSboots, the OS agent may be run as part of the of the computing device's105 startup process. Accordingly, the OS agent, with the address 125,accesses the source of the software package and downloads the softwarepackage. In an example, the product key 130 may be used as verificationthat the computing device is authorized to download and/or install thesoftware package.

Once downloaded, the OS agent may have a software packaged installerexecuted. This allows for the installation of the software package ontothe data storage device of the computing device 105. In an example, atany time after booting of the OS, a user may either accept the downloadand/or installation of the software package via a number of GUIsprovided to the user via a visual output device such as a screen. In anexample, the download and installation is automatically completedwithout further interaction from the user.

Additionally, the PTCM 115 may download any number of OS agentsassociated with any number of software packages based on any number ofsoftware package coupons 120 stored on the proximity tag 110 andaccessed by the PTCM 115. In an example, a purchaser of the computingdevice 105 may request from a sales person that these additionalsoftware package coupons 120 be written to the proximity tag 110 at thetime of purchase. The sales person may then use a proximity tag writerto write to the proximity tag 110 any number of addresses 125 todownloadable OS agents associated with any number of software packagesand any associated product keys 130.

The software packages downloadable by the OS agents may be any type ofsoftware package that is a customization package of an existingapplication installed on the computing device 105 or a standaloneapplication yet to be installed on the computing device 105.Additionally, third-party developers may request that, as a promotionalcampaign for example, their software package coupons 120 be written tothe proximity tag 110 at the point of sale. In this example, thethird-party software package may be downloaded as described above andthe user may use, for example, a promotional version of the softwarepackage to entice the user to purchase a complete or continued versionof the third-party software package.

FIG. 3 is a flowchart showing a method of installing a software packageaccording to an example of the principles described herein. In thisexample, the method 300 may include storing a software package coupon ona proximity tag 110 coupled to a computing device 105, at 305. Asmentioned above, this may be done through the use of a proximity tagwriting device that may establish a wireless communication with theproximity tag 110 and write data to a storage device located on theproximity tag 110. At a point of sale, for example, of the computingdevice 105, a purchaser may request from the sales person that certainsoftware packages or customization software packages be included withthe purchased or to be purchased computing device 105. Upon request, thesales person may cause any number of software package coupons 120 to bewritten to the storage device on the proximity tag 110. Although thepresent describes the programming of the data storage device of theproximity tag 110 by a point of sale representative, other scenarios orsituations may allow for any person to program the proximity tag 110with at least the software package coupon 120 as described herein.Consequently, the present example is not meant to limit the presentdisclosure but instead merely provided as an example.

The method 300 may continue with accessing the software package coupon120 and downloading and installing an operating system OS agent duringan initial booting of the computing device 105, at 310. In connectionwith the example provided above, after a point-of-sale purchase a usermay boot up the computing device 105 in an initial use of the computingdevice 105. During this booting process, the BIOS of the computingdevice 105 may initiate a proximity tag 110 reading procedure byestablishing communication with the proximity tag 110. In an example,this is a wireless communication established between the computingdevice 105 and the proximity tag 110 such that a proximity tag readerprovides the energy to establish the wireless communication with theproximity tag 110. In an example, the communication established with theproximity tag 110 is a wired communication with the proximity tag 110being in electrical communication via a wire to, for example, theprocessor of the computing device 105.

Once communication with the proximity tag 110 is established, the PTCM115 may access an address describing where an OS agent may be downloadedas well as the product key 130 associated with the OS agent and thesoftware package to be downloaded. In an example, the OS agent may bepreloaded on a data storage device associated with the computing device105 and the address is an address to a portion of the data storagedevice on the computing device 105 where the OS agent may be accessed.In this example, the PTCM 115 may confirm access the OS agent on thedata storage device and configure the OS of the computing device 105 tocall the OS agent while booting of the OS. This may be done by alteringthe registry keys of the OS, or using any other method adequate to thespecific OS of the computing device 105, such that installation of theOS agent is to occur prior to a complete booting of the OS.

In an example, the PTCM 115 may be provided with a link, such as a URL,from the proximity tag 110. In this example, the BIOS and PTCM 115 mayestablish a connection to the network on which the OS agent may bedownloaded from, download the OS agent from the network, and save the OSagent, along with the product key 130, on a dedicated portion of thedata storage device of the computing device 105. The process maycontinue as above with the PTCM 115 confirming access the OS agent onthe data storage device and configuring the OS of the computing device105 to call the OS agent while booting of the OS. This may be done byaltering the registry keys of the OS, or using any other method adequateto the specific OS of the computing device 105, such that installationof the OS agent is to occur prior to a complete booting of the OS.

The method 300 may then continue with downloading and installing thesoftware package during booting of the OS of the computing device 105via the OS agent, at 315. Because the OS agent was called during thebooting process of the OS, the OS agent is then directed to search forthe described customization software package or other software packageeither on the data storage device of the computing device 105 or on theabove described network. In an example, the software package may belocated on a memory device of the computing device 105 and accessible tothe OS agent. In an example, the software package is accessible to theOS agent from a remote repository located over a computer networkcommunicatively coupled to the computing device 105. In either case, theOS agent downloads 315 the software package and proceeds with theinstallation 315 process of the software package. This may or may notinvolve user interaction during the installation process. In an example,a user may not be made aware of the installation. In this example, theaddition of the product key 130 and software package coupon 120 to theproximity tag 110 may be seen as implicit authorization by the user toinstall the associated software package. In an example, the user may beallowed to confirm if and how the software package is to be installed. Areboot of the BIOS and OS may or may not be implemented at this time.

In the example, where the software package is located on the memorydevice of the computing device, the software that is not installed ontothe computing device 105 may be deleted from the memory device. In thisexample, any number of software packages may be available on the memorydevice and those that were not installed may be deleted. In an example,those software packages that were not installed included those softwarepackages that the user did not pay for and, consequently, did not have acorresponding software package coupon 120 programed onto the proximitytag 110.

FIG. 4 is a block diagram showing the network topography and datatransfer of a system 400 for installing a software package according toan example of the principles described herein. The system 400 mayinclude a proximity tag reader/writer 405, a computing device 410including a hardware platform 460 with a proximity tag 110 coupledthereto, and a network 415.

The proximity tag reader/writer 405 may be used to access the proximitytag 110 and write data to the proximity tag 110 as described above. Thedata may include any type of data that may be used to install a softwarepackage on the computing device 410 associated with the proximity tag110. In an example, the data includes, at least, a product key 130associated with a customization software package or software package andan address 125 describing a location where an OS agent is to bedownloaded or accessed by the computing device 410 and more specificallyby a PTCM 115. In an example, the proximity tag reader/writer 405 mayalso be used to access the data on the proximity tag 110 to confirmproper transfer of the data.

The computing device 410 may include the proximity tag 110 as describedabove, a BIOS 420, and an operating system 425. The proximity tag 110may be communicatively coupled, either wirelessly or wired, to aprocessor of the computing device 410. Having the proximity tag 110 incommunication with the processor of the computing device 410 allows forthe PTCM 115 described above to access the data from the proximity tag110 during booting of the BIOS 420.

The BIOS 420 may include the PTCM 115 and a network stack 430. In anexample, both the BIOS 420 and the PTCM 115 follow the unifiedextensible firmware interface UEFI standard. As described herein, thePTCM 115 may be executed by the BIOS 420 to access, through a wired orwireless communication channel the proximity tag 110. The procedureenacted by the PTCM 115 may also retrieve a product key 130 and address125 to an OS agent 435, download the OS agent 430 to a data storagedevice of the computing device 105, and store the OS agent 430 on a datastorage device of the computing device 105.

After downloading the OS agent 435, the PTCM 115 may cause the OS agentto be installed by configuring, for example, the registry keys 445 ofthe OS 425 such that the OS 425 calls or executes the OS agent 435 oncethe OS 425 is booted.

As the OS agent 435 is executed as part of the startup process of thecomputing device 105, the OS agent 435 downloads the software packageassociated with the OS agent 435 and software package coupon 120 asdescribed above. Having downloaded the software package, the product key440 may be used to verify user authenticity to use the software package.Once this has been verified, a software package installer 450 mayinstall the software package 455.

Aspects of the present system and method are described herein withreference to flowchart illustrations and/or block diagrams of methods,apparatus systems and computer program products according to examples ofthe principles described herein. Each block of the flowchartillustrations and block diagrams, and combinations of blocks in theflowchart illustrations and block diagrams, may be implemented bycomputer usable program code. The computer usable program code may beprovided to a processor of a general-purpose computer, special purposecomputer, or other programmable data processing apparatus to produce amachine, such that the computer usable program code, when executed via,for example, the processor of the computing device 105 or otherprogrammable data processing apparatus, implement the functions or actsspecified in the flowchart and/or block diagram block or blocks. In oneexample, the computer usable program code may be embodied within acomputer readable storage medium; the computer readable storage mediumbeing part of the computer program product. In one example, the computerreadable storage medium is a non-transitory computer readable medium.

The specification and figures describe a method of installing a softwarepackage on a computing device using a proximity tag. The method, device,and system described herein implements a proximity tag to install acustomization software package or software application generally. Theproximity tag may have a software package coupon programed thereon at apoint of sale. This allows for a computing device to be customized at apoint of sale. Additionally, through the use of a software packagecoupon, a computing device may be customized with relatively littleeffort by the user through the use of an OS agent being executed priorto booting of an OS on the computing device. This provides for a methodby which a user does not find a source of a software package beforeinstalling the software package on the computing device. In someexamples, a user may not actually need to make physical contact with thecomputing device in order to have customization software packagesconfigured to be installed on the computing device. Additionally,through the use of the proximity tag, the computing device does not needto be unboxed and powered up in order to configure the customization ofthe computing device. Instead, the software package coupon may bewritten thereto.

Still further, vendors and/or system integrators, for example, couldrelatively more easily configure computing devices to automaticallyinstall specific software packages requested by the customers, withouthaving to unpack the computing devices from their packaging and setupthe system manually. This may save time and reduce the cost ofmanufacture or installation. This may be especially useful whenpreparing batches of systems for customers that buy them in relativelylarge quantities. End users may turn on the computing device and waitfor the software package or customization software package toautomatically configure the computing device with the proper packages.This is done without any further interaction with the machine. As aresult, the use of the proximity tag may boost sales during specificmarketing campaigns. For example, if a retailer is implementing thesystem described herein e.g. has the capability of having a proximitytag reader, software packages and product keys, he/she could propose tohis/her customers to “program” anti-virus software package, for example,into a computing device at the sales point without having to go throughinstallation processes and without using any other software media CD,DVD, network connection, etc. to do so.

The preceding description has been presented to illustrate and describeexamples of the principles described. This description is not intendedto be exhaustive or to limit these principles to any precise formdisclosed. Many modifications and variations are possible in light ofthe above teaching.

What is claimed is:
 1. A method of installing a software package,comprising: storing a software package coupon on a proximity tag coupledto a computing device; accessing the software package coupon andinstalling an operating system OS agent during an initial booting of thecomputing device; and with the OS agent, downloading and installing thesoftware package.
 2. The method of claim 1, wherein the proximity tagfurther comprises a product key that provides authorization to downloadthe software package, install the software package, or a combinationthereof.
 3. The method of claim 1, wherein accessing the softwarepackage coupon comprises initiating a coupon manager procedure with aproximity tag coupon manager PTCM within a basic input/output systemBIOS by initiating a communication channel between the proximity tag anda processor associated with the computing device and reading thesoftware package coupon on the proximity tag.
 4. The method of claim 3,wherein the PTCM downloads the OS agent using a unified extensiblefirmware interface UEFI network stack.
 5. The method of claim 4, whereinthe OS agent is downloaded over a network using a uniform resourcelocator provided by the software package coupon.
 6. The method of claim4, wherein the OS agent is downloaded from a memory device within thecomputing device.
 7. The method of claim 3, wherein the PTCM configuresan operating system OS on the computing device to call the OS agent uponbooting of the OS.
 8. The method of claim 7, wherein configuration ofthe OS comprises changing registry keys to call the OS agent uponbooting of the OS.
 9. A computing device, comprising: a proximity tag;and a proximity tag coupon manager PTCM; wherein, prior to booting of anoperating system OS on the computing device, the PTCM is to read asoftware package coupon stored on the proximity tag, install an OS agentbased on data associated with the software package coupon, and cause theOS agent to be called during booting of the OS for installation of asoftware package on the computing device.
 10. The computing device ofclaim 9, further comprising a storage device on which to store the OS,OS agent, software package, and a product key associated with thesoftware package.
 11. The computing device of claim 9, furthercomprising a network adapter to communicatively couple the computingdevice to a network such that the OS agent may access and download thesoftware package from a remote repository for installation of thesoftware package on the computing device.
 12. The computing device ofclaim 9, wherein the software package is stored on a memory device ofthe computing device and wherein software packages not installed on thecomputing device are deleted from the memory device after shutdown ofthe computing device.
 13. A proximity tag, comprising: a softwarepackage coupon comprising: an address to a source to download anoperating system OS agent; and a product key to install a softwarepackage during an initial booting of an operating system of a computingdevice.
 14. The proximity tag of claim 13, wherein the proximity tag isa passive proximity tag.
 15. The proximity tag of claim 13, wherein theproximity tag is an active proximity tag.